package com.joney.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author wangxianchen
 * @create 2018-01-18
 * @desc
 */
public class ParseUtil {

    /** 将传入的文件重命名成不带 - 的 uuid 名称并返回 */
    public static String renameFile(String fileName) {
        return JudgeUtil.isBlank(fileName) ? JudgeUtil.EMPTY : JudgeUtil.uuid() + getSuffix(fileName);
    }

    /** 为空则返回空字符串, 如果传入的 url 中有 ? 则在尾部拼接 &, 否则拼接 ? 返回 */
    public static String appendUrl(String src) {
        if (JudgeUtil.isBlank(src)) return JudgeUtil.EMPTY;
        return src + (src.contains("?") ? "&" : "?");
    }
    /** 为空则返回 /, 如果开头有 / 则直接返回, 否则在开头拼接 / 并返回 */
    public static String addPrefix(String src) {
        if (JudgeUtil.isBlank(src)) return "/";
        if (src.startsWith("/")) return src;
        return "/" + src;
    }
    /** 为空则返回 /, 如果结尾有 / 则直接返回, 否则在结尾拼接 / 并返回 */
    public static String addSuffix(String src) {
        if (JudgeUtil.isBlank(src)) return "/";
        if (src.endsWith("/")) return src;
        return src + "/";
    }
    /** 从 url 中获取图片名, 最后一个 斜杆(/) 后的内容 */
    public static String getFileNameInUrl(String url) {
        if (JudgeUtil.isBlank(url) || !url.contains("/")) return JudgeUtil.EMPTY;
        // 只截取到 ? 处, 如果有的话
        int last = url.contains("?") ? url.lastIndexOf("?") : url.length();
        return url.substring(url.lastIndexOf("/") + 1, last);
    }

    /** 获取后缀(包含点 .) */
    public static String getSuffix(String image) {
        return (JudgeUtil.isNotBlank(image) && image.contains("."))
                ? image.substring(image.lastIndexOf(".")) : JudgeUtil.EMPTY;
    }
    /** 获取前缀(不包含点 .) */
    public static String getPrefix(String image) {
        return (JudgeUtil.isNotBlank(image) && image.contains("."))
                ? image.substring(0, image.lastIndexOf(".")) : JudgeUtil.EMPTY;
    }
    public static String enUnicoding(final String str) {
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<str.length(); i++) {
            char c = str.charAt(i);
            String hexB = Integer.toHexString(c);
            if(hexB.length()<=2) {
                hexB = "00" + hexB;
            }
            sb.append("\\u" + hexB);
        }
        return sb.toString();
    }

    public static String deUnicoding(final String codingStr) {
        StringBuffer sb = new StringBuffer();
        String []hex = codingStr.split("\\\\u");
        for (int i = 1; i < hex.length; i++) {
            int data = Integer.parseInt(hex[i], 16);
            sb.append((char)data);
        }
        return sb.toString();
    }

    /**
     * 获取xml格式的字符里节点内容
     * @param xmlStr
     * @param nodeName
     * @return
     */
    public static String getStrFromXml(String xmlStr,String nodeName){
        Pattern p = Pattern.compile("<"+nodeName+">([^<]+)</"+nodeName+">");
        Matcher m = p.matcher(xmlStr);//
        return m.find() ? m.group(1) : null;
    }
}
